package tela;

import com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;
import ferramentas.Query;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import pessoal.*;
import tentativa.Tentativa;
import tentativa.TentativaDemanda;

/**
 *
 * @author ciar
 */
public class formularioMudancaEmail extends HttpServlet implements validavel {

    Query q;
    Usuario usuario;
    SimpleDateFormat formater = new SimpleDateFormat("dd/MM/yyyy");

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();

        q = new Query();
        Date nascimento = null;
        try {
            nascimento = formater.parse(request.getParameter("nascimento").replaceAll("-", "/"));
        } catch (ParseException ex) {
            System.out.println("Erro no campo Data de Nascimento:\n" + ex);
        }

        String email = request.getParameter("email");
        String emailNovo = request.getParameter("email_novo");
        String cpf = request.getParameter("cpf");
        String nome = request.getParameter("nome").toUpperCase();
        try {
            usuario = q.getUsuario(cpf);         
        } catch (Exception ex) {
            out.println("window.alert('Usuário não encontrado em nossa base de dados!');history.go(-1);");
        }

        if (usuario != null) {
            if (nome.equalsIgnoreCase(usuario.getNome() + " " + usuario.getSobrenome()) && nascimento.equals(usuario.getNascimento())
                    && email.equalsIgnoreCase(usuario.getEmail())) {
                usuario.setEmail(emailNovo);

                try {
                    q.atualizarEmailUsuario(cpf, emailNovo);
                    out.println("<script>window.alert('Seu e-mail foi atualizado com sucesso!');</script>");
                    out.println("<script>window.location ='index.jsp';</script>");
                } catch (SQLException ex) {
                    out.println("<script>window.alert('Não foi possível atualizar o seu e-mail. Caso o problema persista entre em contato com o Suporte Técnico do CIAR!');history.go(-1);</script>");
                    System.out.println(ex.getMessage());
                }
            } else {
                out.println("<script>window.alert('Os dados informados não conferem com os dados cadastrados para este usuário! Certifique-se que as informações estão corretas.');history.go(-1);</script>");
            }
        }
        else {
            out.println("<script>window.alert('Usuário não encontrado em nossa base de dados!');history.go(-1);</script>");
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    public void validar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    private String getNome(String nomePOST) {
        if (nomePOST.indexOf(" ") != -1) { // provavelmente possui sobrenome
            return nomePOST.substring(0, nomePOST.indexOf(" "));
        } else {
            return nomePOST;
        }
    }

    private String getSobrenome(String nomePOST) {
        try {
            if (nomePOST.indexOf(" ") != -1) { // provavelmente possui sobrenome
                return nomePOST.substring(nomePOST.indexOf(" ") + 1, nomePOST.length());
            } else {
                return "(Sobrenome não informado)";
            }
        } catch (IndexOutOfBoundsException ex) {
            return "(Sobrenome não informado)";
        }
    }
}
